| File information: | |
| File name: | Sort.mesa_Sep78.pdf [preview Sort.mesa Sep78] |
| Size: | 320 kB |
| Extension: | |
| Mfg: | xerox |
| Model: | Sort.mesa Sep78 🔎 |
| Original: | Sort.mesa Sep78 🔎 |
| Descr: | xerox mesa 4.0_1978 listing Mesa_4_Lister Sort.mesa_Sep78.pdf |
| Group: | Electronics > Other |
| Uploaded: | 10-03-2020 |
| User: | Anonymous |
| Multipart: | No multipart |
| Information about the files in archive: | ||
| Decompress result: | OK | |
| Extracted files: | 1 | |
File name Sort.mesa_Sep78.pdf Sort.mesa 2-Sep-78 18:18:51 Page 1 --file Sort.mesa --last modified by Bruce on July 30, 1978 4:30 PM -- translated from Ed McCreight's BCPL by Jim Frandeen DIRECTORY AltoDefs: FROM "AltoDefs", FSPDefs: FROM "fspdefs" USING [NoRoomInZone, NodeOverhead], GPsortDefs: FROM "GPsortDefs", InlineDefs: FROM "inlinedefs" USING [COPY], StreamDefs: FROM "StreamDefs"; DEFINITIONS FROM GPsortDefs; Sort: PROGRAM IMPORTS FSPDefs, GPsortDefs, StreamDefs EXPORTS GPsortDefs m BEGIN NFiles: CARDINAL = 3; -- number of scratch files bufferSize: INTEGER; compareProc: CompareProcType; files: ARRAY [0 .. NFiles] OF FdHandle; firstFreeEnt: CARDINAL; -- 1 + end of unsorted part of heap vector getProc: GetProcType; heap: DESCRIPTOR FOR ARRAY OF ItemHeaderHandle; heapSize: CARDINAL; -- end of heap-sorted part of heap vector inputFinished: BOOLEAN; itemIsLeftOver: BOOLEAN; leftoverItem: ItemHandle; leftoverItemLen: ItemLength: level: CARDINAL; maxHeapSize: CARDINAL; maxItemWords: CARDINAL; occItemWords: CARDINAL; putProc: PutProcType; recordSize: CARDINAL; RecordTooLong: PUBLIC ERROR CODE; BuildHeap: PROCEDURE BEGIN L: CAkDINAL; heapSize +- 0; MaintainHeap[]; heapSize +- firstFreeEnt-1; L +- (heapSize/2)+1; WHILE L > 1 DO L +- L-1; SiftDown[L,heap[L]]: ENDLOOP; RETURN: END: BuildRuns: PROCEDURE BEGIN --Continue reading and sorting, alternating in Fibonacci sequence, until the input is exhausted. A: CARDINAL; item: ItemlleaderHandle: i: CARDINAL: j: CARDINAL +- 1; LFile: FcHlandle: NT: CARDINAL; 1 eve 1 .- 1; 00 OPEN files[j]; IF level> 1 THEN dh.put[dh,EOR]; -- end-of-run marker FOR item +- GetHeap[], GetHeap[] UNTIL item | ||

| Date | User | Rating | Comment |